A survey of the seamounts south of Tasmania on board of the Australian Marine National Facility Vessel Investigator imagery of the seafloor was collected on transects using a towed camera system. The imagery consist of Video and stereo still images. The data is structured into seamounts (Map Locations), transects (operations) and images that are geolocated in space. A selection of the stereo stills are processed to generate a quadrat of measured size overlaid on the image. The area within quadrats is annotated for (1) percent cover of substrate types with the matrix-forming coral (esp. Solenosmilia variabilis) being of particular interest, and for (2) counts of individuals of indicator taxa for ‘VME’ (Vulnerable Marine Ecosystems).
Plate 1 Example images of the habitats
Percent cover of substrate types is annotated using a point count approach in TransectMeasure software from SEAGIS. Random points at a density of 5 points.m-2) were thrown into the measured quadrat and annotated for 16 categories, including 3 matrix-forming coral species distinguished into live vs. dead, 4 other biogenic substrates, 5 non-biogenic substrate types and a not-scorable’ category where no category could be assigned due to image limitation or obstruction by mobile fauna. The CATAMI classification (Althaus et al. 2015) was used to define the substrate categories. Descriptive codes were used for each category for ease of data manipulation.In addition to the annotations of the random points an overall classification of the whole quadrat was applied to capture the overall impression, especially with regard to potential past fishing impact.
Codes and descriptions of the point categories used:
Counts of indicator taxa for vulnerable marine ecosystems (VME) are made within each quadrat, allowing for calculating standardised densities per square metre. In addition, by-eye estimated of the percent cover of coral matrix (dead & alive combined) are recorded for the three types of matrix forming coral distinguished for percent cover annotations, in order to compare percent cover from point counts and estimates. Annotations are made in the CSIRO insidence of the MBARI developed Video Annotation and Registration System (VARS). The VME taxa targetted are listed below. Again, the CATAMI classification (Althaus et al. 2015) was used to classify the taxa. The comments field in VARS is used to record counts and to record additional modifyiers such as colour of distinctive taxa within some of the VME taxon groups (e.g. yellow and brown stalked crinoids were distinguished). An additional category of ‘No-VMEfauna’ was added to indicate that an image was annotated but none of the taxa of interest were observed.
VME taxa targetted:
Additional taxa of interest:
Percent cover of matrix forming coral (dead & alive), by-eye estimate:
The TM raw output data set is a concatenation of all TM project outputs. Each of the output files consist of the point annotations within images and the ‘user defined’ point annotation for the entire image. The raw data extract is tidied up using the separate R script Tidy_TM_Concat_data.R. This separates the raw data into overview annotations and point annotations and transformed into percent cover by substrate category for each image. Then the latter are linked to image geolocation information and written out to .cvs as column-format data (PCcover.csv) and as matrix format (PCcoverbyImage.csv), for use in further analyses and for mapping in QGIS.
Note, at this stage the overview annotations were separated out from percent cover data but are not furher cleand or considered.
The VME taxon counts are extracted from the VARS Oracle data base using the script VARS_2018-StillsAnnoExtracts.sql or VARS_2018-StillsAnnoExtracts_V2.sql. The raw data extract is tidied up using the separate R script VME_anno_tidy.R or VME_anno_tidy_Version2.R. The difference between the versions is that the original extracts only dta where a quadrat is in VARS, the latter extracts that for the ‘port’ images thus including annotations made where the qudrat was not read into VARS. The non-numrical comments are separated from the counts and percent covers; these are currently not further used. The numeric data is split into percent cover data and the counts. The latter are linked to the quadrat sizes and converted to densities (ind.m-2). each of the tables is linked to image geolocation information and written out to .cvs as column-format data (VMEanno_PCcoral.csv and VMEanno_DensQ.csv) and combined as matrix format (VMEannoMatrix.csv), for use in further analyses and for mapping in QGIS.
Note, at this stage the modifyiers (colour, etc) are not incorporated into the output data.
Inital data summaries and plots based on the by image operations details and the five .csv files written out by the data cleaning process.
# read all stills data and make depth numeric
AllSTills <- read_csv("data/IN2018_V06_AllStills.csv") %>%
mutate(depth=as.numeric(Z)) %>%
select(-c(Z))
PCcoverbyImage <- read_csv("Results/PCcoverbyImage.csv")
PC_cover <- read_csv("Results/PCcover.csv")
VMEanno_DensQ <- read_csv("Results/VMEanno_DensQ.csv")
VMEanno_PCcoral <- read_csv("Results/VMEanno_PCcoral.csv")
VMEannoMatrix <- read_csv("Results/VMEannoMatrix.csv")
# summary not presented in Table but handy to have code identifying all images selected together with selection number
SelectedStlls <- AllSTills %>%
filter(`Selection round (1 orig sel, 2 replacement)` == 1 |
`Selection round (1 orig sel, 2 replacement)` == 2 |
`Selection round (1 orig sel, 2 replacement)` == 3)
replaced <- SelectedStlls %>%
filter(RAN_SEL_STAT == "R")
NSNR <- SelectedStlls %>%
filter(RAN_SEL_STAT == "NS-NR")
TargetQuads <-SelectedStlls %>%
filter(RAN_SEL_STAT != "R")
In total 6182 images were potentially targeted for annotation, of these 5495 have been annotated for percent cover of substrate types, 3787 have been annotated for VME taxa and 129 were identified as unsuitable for annotation and could not be replaced; in total 2759 of the original selected images were replaced through our ‘gapfilling’ protocol. Summary of the number of images targeted for stills analyses and the number of images annotated for percent cover and for VME taxa. (NOTE need to exclude operations that were not targeted from this summary)
PC_done <- PCcoverbyImage %>%
group_by(SVY_OPS) %>%
summarise(PCdone=n())
VME_done <- VMEannoMatrix %>%
group_by(SVY_OPS) %>%
summarise(VMEdone=n())
NSNR_ops <- NSNR %>%
group_by(SVY_OPS) %>%
summarise(NR= n())
## NOTE will need to limit the data here to target ops only
Target <- AllSTills %>%
group_by(SVY_OPS, MapLoc, `Target RANSMPL (1/10)`) %>%
filter(`Selection round (1 orig sel, 2 replacement)` == 1 |
`Selection round (1 orig sel, 2 replacement)` == 2 |
`Selection round (1 orig sel, 2 replacement)` == 3) %>%
filter(RAN_SEL_STAT != "R") %>%
summarise(Selected = n()) %>%
left_join(PC_done, by=c("SVY_OPS"="SVY_OPS")) %>%
left_join(VME_done, by=c("SVY_OPS"="SVY_OPS")) %>%
left_join(NSNR_ops, by=c("SVY_OPS"="SVY_OPS"))
#tried to call this in text xxx with `r view(nTarget)` but doesn't work
kable(Target[1:7], caption="By operation processing summary")
| SVY_OPS | MapLoc | Target RANSMPL (1/10) | Selected | PCdone | VMEdone | NR |
|---|---|---|---|---|---|---|
| IN2018_V06_012 | Hill U | 27 | 49 | 38 | 38 | 11 |
| IN2018_V06_013 | Hill U | 22 | 39 | 37 | 37 | 2 |
| IN2018_V06_014 | Hill U | 17 | 32 | 20 | 20 | 12 |
| IN2018_V06_015 | Pedra | 53 | 95 | 94 | 94 | 1 |
| IN2018_V06_021 | z16 | 18 | 38 | 32 | 34 | 4 |
| IN2018_V06_022 | Pedra | 21 | 51 | 50 | 50 | 1 |
| IN2018_V06_024 | z16 | 41 | 44 | 35 | 35 | 6 |
| IN2018_V06_025 | Pedra | 63 | 63 | 51 | 40 | NA |
| IN2018_V06_026 | Mongrel | 64 | 64 | 36 | 36 | 2 |
| IN2018_V06_027 | Pedra | 95 | 97 | 94 | 40 | 4 |
| IN2018_V06_029 | Mongrel | 59 | 59 | 26 | 26 | NA |
| IN2018_V06_031 | Hill U | 41 | 42 | 41 | 32 | NA |
| IN2018_V06_032 | Hill U | 55 | 54 | 51 | 36 | 1 |
| IN2018_V06_040 | Pedra | 80 | 80 | 78 | 50 | NA |
| IN2018_V06_041 | z16 | 50 | 50 | 48 | 30 | 2 |
| IN2018_V06_042 | Sisters | 81 | 81 | 81 | 60 | NA |
| IN2018_V06_043 | Sisters | 83 | 83 | 81 | 50 | 2 |
| IN2018_V06_044 | Sisters | 72 | 71 | 96 | 46 | NA |
| IN2018_V06_045 | Hill K1 | 44 | 45 | 43 | 37 | 1 |
| IN2018_V06_046 | Sisters | 67 | 67 | 63 | 43 | 4 |
| IN2018_V06_051 | Hill K1 | 80 | 82 | 70 | 44 | 11 |
| IN2018_V06_052 | Hill K1 | 48 | 50 | 46 | 29 | 1 |
| IN2018_V06_053 | Hill K1 | 57 | 66 | 44 | 30 | 14 |
| IN2018_V06_054 | Hill K1 | 48 | 55 | 46 | 22 | 2 |
| IN2018_V06_055 | Hill K1 | 60 | 72 | 59 | 36 | 1 |
| IN2018_V06_056 | Sisters | 70 | 70 | 69 | 41 | 1 |
| IN2018_V06_057 | Sisters | 67 | 67 | 61 | 33 | 6 |
| IN2018_V06_059 | Sisters | 56 | 56 | 55 | 36 | NA |
| IN2018_V06_060 | Little Sister (z56) | 38 | 39 | 37 | 25 | 1 |
| IN2018_V06_061 | Hill U | 38 | 38 | 37 | 23 | NA |
| IN2018_V06_062 | z16 | 39 | 39 | 39 | 25 | NA |
| IN2018_V06_063 | z16 | 43 | 43 | 46 | 31 | NA |
| IN2018_V06_064 | z16 | 37 | 37 | 32 | 20 | 1 |
| IN2018_V06_067 | Sisters | 63 | 63 | 63 | 23 | NA |
| IN2018_V06_068 | Hill K1 | 45 | 50 | 42 | 6 | 2 |
| IN2018_V06_075 | Main Matt | 66 | 66 | 65 | 51 | 1 |
| IN2018_V06_080 | Fang | 25 | 25 | 24 | NA | NA |
| IN2018_V06_081 | Sisters | 57 | 57 | 57 | 29 | NA |
| IN2018_V06_082 | Hill K1 | 41 | 41 | 41 | 31 | NA |
| IN2018_V06_083 | Main Matt | 83 | 83 | 83 | 67 | NA |
| IN2018_V06_084 | Main Matt | 81 | 81 | 80 | 65 | NA |
| IN2018_V06_085 | Main Matt | 75 | 75 | 73 | 56 | 1 |
| IN2018_V06_088 | Main Matt | 79 | 79 | 79 | 60 | NA |
| IN2018_V06_089 | Main Matt | 69 | 69 | 69 | 57 | NA |
| IN2018_V06_090 | slope | 36 | 36 | 36 | 34 | NA |
| IN2018_V06_091 | Main Matt | 95 | 95 | 94 | 79 | NA |
| IN2018_V06_092 | Main Matt | 66 | 69 | 69 | 51 | NA |
| IN2018_V06_093 | Fang | 20 | 20 | 19 | 11 | 1 |
| IN2018_V06_095 | z99 | 66 | 67 | 65 | 47 | NA |
| IN2018_V06_097 | Main Matt | 64 | 64 | 63 | 48 | NA |
| IN2018_V06_098 | z110 | 74 | 74 | 70 | 37 | 3 |
| IN2018_V06_099 | slope | 76 | 76 | 66 | 42 | NA |
| IN2018_V06_100 | slope | 59 | 59 | 60 | 26 | NA |
| IN2018_V06_101 | slope | 66 | 66 | 66 | NA | NA |
| IN2018_V06_103 | slope | 60 | 60 | 33 | 33 | NA |
| IN2018_V06_104 | slope | 17 | 17 | NA | 9 | NA |
| IN2018_V06_106 | slope | 61 | 60 | 23 | 21 | NA |
| IN2018_V06_107 | slope | 15 | 15 | 9 | 9 | NA |
| IN2018_V06_108 | slope | 59 | 59 | 54 | 34 | NA |
| IN2018_V06_109 | slope | 69 | 69 | 60 | 35 | 3 |
| IN2018_V06_110 | Pedra | 54 | 54 | 31 | 34 | NA |
| IN2018_V06_113 | z16 | 33 | 31 | 33 | 28 | NA |
| IN2018_V06_114 | z16 | 35 | 35 | 35 | 30 | NA |
| IN2018_V06_116 | Hill U | 83 | 84 | 80 | 49 | 3 |
| IN2018_V06_117 | Hill U | 34 | 34 | 33 | 16 | 1 |
| IN2018_V06_118 | z34 | 44 | 44 | 26 | 16 | NA |
| IN2018_V06_119 | z20 | 24 | 24 | 12 | 9 | NA |
| IN2018_V06_120 | slope | 51 | 51 | 20 | 20 | NA |
| IN2018_V06_121 | Belinda’s Dory Hill | 18 | 18 | 7 | 6 | 1 |
| IN2018_V06_122 | z103 | 64 | 64 | 27 | 22 | NA |
| IN2018_V06_123 | Hill V | 34 | 34 | 13 | 12 | NA |
| IN2018_V06_125 | z16 | 36 | 36 | 34 | 31 | 1 |
| IN2018_V06_127 | z4 | 46 | 52 | 49 | 35 | 3 |
| IN2018_V06_128 | Punch’s Hill | 22 | 23 | 22 | 15 | 1 |
| IN2018_V06_129 | slope | 62 | 62 | 21 | 21 | NA |
| IN2018_V06_130 | slope | 63 | 63 | 60 | 35 | 1 |
| IN2018_V06_131 | Andy’s | 33 | 33 | 13 | 11 | NA |
| IN2018_V06_133 | slope | 63 | 63 | 34 | 34 | NA |
| IN2018_V06_134 | slope | 69 | 69 | 28 | 28 | NA |
| IN2018_V06_136 | slope | 70 | 70 | 69 | 17 | 1 |
| IN2018_V06_137 | Patience | 20 | 20 | NA | NA | NA |
| IN2018_V06_138 | slope | 40 | 40 | 37 | NA | NA |
| IN2018_V06_145 | z77 | 70 | 70 | 69 | 46 | 1 |
| IN2018_V06_146 | z5 | 72 | 72 | 71 | 28 | NA |
| IN2018_V06_147 | New 1 | 57 | 57 | 53 | 35 | 2 |
| IN2018_V06_148 | z96 | 12 | 12 | 10 | 8 | 2 |
| IN2018_V06_150 | Atoll | 78 | 77 | 76 | 32 | NA |
| IN2018_V06_151 | z12 | 47 | 47 | 46 | 25 | NA |
| IN2018_V06_152 | z70 | 31 | 31 | 30 | 12 | 1 |
| IN2018_V06_154 | slope | 45 | 45 | 41 | 24 | 4 |
| IN2018_V06_155 | Punch’s Hill | 30 | 30 | 30 | 22 | NA |
| IN2018_V06_156 | Corvina group N | 30 | 30 | 29 | 18 | NA |
| IN2018_V06_158 | z53 | 75 | 75 | 73 | 49 | NA |
| IN2018_V06_161 | z44 | 33 | 33 | 32 | 27 | NA |
| IN2018_V06_162 | Patience | 51 | 51 | 46 | 37 | 1 |
| IN2018_V06_164 | z91 | 25 | 25 | 24 | 14 | NA |
| IN2018_V06_165 | z24 | 33 | 33 | 32 | 26 | 1 |
| IN2018_V06_166 | z8 | 70 | 70 | 67 | 49 | 3 |
| IN2018_V06_167 | Punch’s Hill | 51 | 51 | 51 | 42 | NA |
| IN2018_V06_168 | z4 | 37 | 37 | 36 | 13 | NA |
| IN2018_V06_172 | St Helens | 79 | 79 | 76 | 76 | NA |
| IN2018_V06_174 | St Helens | 77 | 77 | 75 | 74 | NA |
| IN2018_V06_176 | St Helens | 66 | 66 | 60 | 59 | NA |
| IN2018_V06_177 | St Helens | 68 | 68 | 65 | 66 | NA |
| IN2018_V06_179 | St Helens | 70 | 70 | 70 | 69 | NA |
| IN2018_V06_181 | St Helens (E) | 39 | 39 | 37 | NA | NA |
| IN2018_V06_182 | St Helens | 66 | 66 | 66 | 65 | NA |
| IN2018_V06_185 | St Helens | 71 | 71 | 71 | 71 | NA |
| IN2018_V06_186 | St Helens | 66 | 66 | 63 | 63 | NA |
| IN2018_V06_187 | Paddys Head | 56 | 56 | 55 | NA | NA |
| IN2018_V06_188 | Paddys Head (E) | 35 | 35 | 33 | NA | NA |
| IN2018_V06_189 | Freycinet Canyon | 45 | 45 | 45 | NA | NA |
| IN2018_V06_190 | Reidle Hill | 81 | 81 | 80 | 76 | NA |
| The depth distrib | ution of the data set |
PCcoverbyImage %>%
ggplot(aes(x = depth)) +
facet_wrap(~ MapLoc) +
geom_histogram(bins=10)
Figure 4.1: depth distribution of the annotated imagery
In total there are 5495 randomly selected images have been annotated for percent cover to date. In total 111 operations have been (at least partially) annotated.
Below is a summary of the data distribution across the targeted substrate types
# check out the substrate codes that were annotated
PCsum <- PC_cover %>%
group_by(L2_Code) %>%
summarise(meanPCcover= mean(PC_cover), PresNo_Images = n())
kable(PCsum [1:3], caption="Summary of the data distribution across the targeted substrate types")
| L2_Code | meanPCcover | PresNo_Images |
|---|---|---|
| NS | 6.132406 | 119 |
| SC-ENLP | 9.975092 | 9 |
| SC-MAD | 7.459777 | 4 |
| SC-SOL | 12.985413 | 414 |
| SU-BBAR | 22.360422 | 180 |
| SU-BCOR | 32.937193 | 1348 |
| SU-BOL | 13.546613 | 192 |
| SU-BOTH | 27.555998 | 1251 |
| SU-COB | 8.886730 | 118 |
| SU-CONBIO | 28.497632 | 1928 |
| SU-ENLP | 12.801383 | 9 |
| SU-MAD | 4.918033 | 1 |
| SU-PEBGRAV | 53.250480 | 1155 |
| SU-ROK | 71.675359 | 2337 |
| SU-SAMU | 44.502566 | 2225 |
| SU-SOL | 61.931814 | 1189 |
The depth distribution of the live and dead coral matrix are of particular interest in looking at the depth distribution of the substrate types.
#distribution of the substrate types
# create a vector with the sequence of the substrate types for ordering them in a meaningful way
SubstSeq <- c('SC-ENLP',
'SU-ENLP',
'SC-SOL',
'SU-SOL',
'SC-MAD',
'SU-MAD',
'SU-BCOR',
'SU-BBAR',
'SU-BOTH',
'SU-ROK',
'SU-BOL',
'SU-COB',
'SU-CONBIO',
'SU-PEBGRAV',
'SU-SAMU',
'NS')
# create a unique colour scheme for substrate types
SubstCol <- c('SC-ENLP' = "yellow",
'SU-ENLP'= "yellow3",
'SC-SOL'= "deeppink",
'SU-SOL'="hotpink1",
'SC-MAD'= "darkorchid1",
'SU-MAD' = "darkorchid4",
'SU-BCOR' = "orange",
'SU-BBAR' = "orange3",
'SU-BOTH' = "orange4",
'SU-ROK' = "blue",
'SU-BOL' = "dodgerblue",
'SU-COB' = "dodgerblue3",
'SU-CONBIO' = "cyan3",
'SU-PEBGRAV'= "cyan",
'SU-SAMU' = "palegreen",
'NS' = "black")
ggplot(PC_cover,
mapping= aes(x=factor(L2_Code, level =SubstSeq), #call the pre existing vector
y=depth,
size=PC_cover,
colour=L2_Code)
)+
geom_point(alpha=0.2)+
scale_y_reverse() + # reverse y-axis because it represents ocean depth
theme(axis.text.x = element_text(angle = 90))+ # rotate the label on x-axis
labs(x="substrate type", y="depth")+
scale_colour_manual(values=SubstCol)+
theme(legend.text = element_text (size=7))+
theme(legend.position = 'bottom')
Figure 4.2: Depth distribution of substrate types summary graph
Coral rubble appears to have quite a high concentratio in the shallowest depths, scattering the raw data may make this easier to see:
PC_cover %>%
ggplot(aes(x = depth,
y = PC_cover))+
geom_point(alpha=0.2)+
facet_wrap(~L2_Code)
Figure 4.3: Depth distribution of substrate types
Distribution of the substrate types by selected locations - here the seamounts from the recovery time series are selected.
# currentl the pie graphs are not run for the knittin...
PC_cover %>%
group_by(MapLoc, L2_Code) %>%
summarise(totPC = sum(PC_cover)) %>%
ungroup() %>%
group_by(MapLoc) %>%
mutate(PCPC = (100*totPC/sum(totPC))) %>%
ggplot(
mapping= aes(x="",
y=PCPC,
fill=factor(L2_Code, level =SubstSeq)
))+
geom_bar(stat="identity", width=1)+
coord_polar("y", start=0)+
scale_fill_manual(values=SubstCol)+
theme(legend.position = 'bottom')+
facet_wrap(~MapLoc, ncol = 5)
Figure 4.4: Pie charts of substrate distribution by locations, using the colour scheme identified above
Figure 2 above shows a relatively narrow depth band where Solenosmilia (particulaly live coral) is observed, and a surprisingly high contribution of coral rubble in the shallowest images. Looking at the distribution of coral matrix formed by Solenosmilia (SC_SOL and SU_SOL) and coral rubble (SU_BCOR) in more detail, particularly by depth and location.
CoralPC <- PC_cover %>%
filter(L2_Code == "SC-SOL" |
L2_Code == "SU-SOL" |
L2_Code == "SU-BCOR" )
CoralPC %>%
ggplot(aes(x = PC_cover)) +
facet_wrap(~ L2_Code) +
geom_histogram()
Figure 4.5: Frequency distrbution histograms of % cover recorded for coral matrix and rubble
Just concentrating on the Coral rubble, why is there a high proportion of rubble in shallow sites
PC_cover %>%
filter(L2_Code == "SU-BCOR") %>%
ggplot(aes(x = depth,
y = PC_cover))+
geom_point(alpha=0.2)+
facet_wrap(~MapLoc)
Figure 4.6: Distribution of coral rubble by seamount location
In total there are 3787 randomly selected images have been annotated for the density of VME taxa to date. In total 106 operations have been (at least partially) annotated.
# looking at the distribution of density and number of taxa over the whole data set
VME_TotDens <- VMEanno_DensQ %>%
#filter(CONCEPT != "No-VMEfauna") %>%
group_by(image_key, SVY_OPS, MapLoc, depth) %>%
summarise(TotDens=sum(Dens),
noTaxa=sum(NoTypes))
TotVME_dens <- VME_TotDens %>%
ggplot(aes(x=TotDens))+
geom_histogram()
# number of Taxa
TotVMEtax <- VME_TotDens %>%
ggplot(aes(x=noTaxa))+
geom_histogram()
# combine plots into a 2 panel figure
plot_grid(TotVMEtax, TotVME_dens)
Figure 4.7: *Frequency distribution of a) total density of VME data and b) total number of taxa
Instead of total density only use the totals for actual VME taxa (excluding urchins,)
# looking at the distribution of density and number of taxa over the whole data set
VMEonly_TotDens <- VMEanno_DensQ %>%
filter( CONCEPT == "Black & Octocorals" |
CONCEPT == "Brisingid" |
#CONCEPT == "D.horridus",
CONCEPT == "Enallopsammia" |
#CONCEPT == "Hydrocorals" |
CONCEPT == "Hydrocorals: Branching" |
#CONCEPT == "Irregular urchins" |
CONCEPT == "Madrepora" |
#CONCEPT == "No-VMEfauna",
#CONCEPT == "Regular urchins" |
CONCEPT == "S.variabilis" |
CONCEPT == "Sponges" |
CONCEPT == "Stalked crinoids" |
CONCEPT == "Stony corals",
#CONCEPT == "True anemones: Fourlobed" |
#CONCEPT == "Unstalked crinoids"
)%>%
group_by(image_key, SVY_OPS, MapLoc, depth) %>%
summarise(VMEtaxaDens=sum(Dens))
VMEonly_TotDens %>%
ggplot(aes(x = VMEtaxaDens))+
geom_histogram()
Figure 4.8: **Frequency distribution of total density of VME taxa only
Combining the totals of the VME taxa annotations with the percent cover annotations allows us to examine correlations between Total VME fauna density and substrate types.
# excluded for now
# looking at some summary stats
#temporary table: add summary of total density, number of taxa and tot density VME taxa to densities of separated VME taxa
TVME <- VMEannoMatrix %>%
select(image_key,
`Black & Octocorals`,
`Brisingid`,
`D.horridus`,
`Enallopsammia`,
`Hydrocorals`,
`Hydrocorals: Branching`,
`Irregular urchins`,
`Madrepora`,
`No-VMEfauna`,
`Regular urchins`,
`S.variabilis`,
`Sponges`,
`Stalked crinoids`,
`Stony corals`,
`True anemones: Fourlobed`,
`Unstalked crinoids`,
PC_Sub_CoralReef,
PC_EnallopMatrix,
PC_SolMatrix) %>%
left_join(VMEonly_TotDens, by=c("image_key"="image_key")) %>%
left_join(VME_TotDens, by=c("image_key"="image_key")) %>%
select(-MapLoc.y, -depth.y, -SVY_OPS.y)
# select out the Percent cover values from PC_Matrix and add this to the table above
VME_AnnoAll <- PCcoverbyImage %>%
select(image_key,
'SC-ENLP',
'SU-ENLP',
'SC-SOL',
'SU-SOL',
'SC-MAD',
'SU-MAD',
'SU-BCOR',
'SU-BBAR',
'SU-BOTH',
'SU-ROK',
'SU-BOL',
'SU-COB',
'SU-CONBIO',
'SU-PEBGRAV',
'SU-SAMU',
'NS',
'OV_CD',
'OV_group',
'OV_CAT') %>%
left_join(TVME, by=c("image_key"="image_key"))
#Reading out the data table is commented out
#kable(VME_AnnoAll [1:42], caption="**Table 3** Combined data matrix (by image) of percent substrate types and VME taxon densities, including the summaries of densities")
# summarising these data by operation to see if the differences average out
Reef_transectSummary <- VME_AnnoAll %>%
filter(!is.na(`PC_SolMatrix`)) %>%
mutate(PCsol = (`SC-SOL`+`SU-SOL`),
GPCsol = (`PC_SolMatrix`),
PCreef = (`SC-SOL`+`SU-SOL`+ `SC-ENLP`+ `SU-ENLP`+ `SC-MAD` + `SU-MAD`),
GPCreef = (`PC_SolMatrix` + `PC_Sub_CoralReef` + `PC_EnallopMatrix`)) %>%
select(SVY_OPS.x, MapLoc.x, image_key, PCsol, GPCsol, PCreef, GPCreef) %>%
group_by(SVY_OPS.x, MapLoc.x) %>%
summarise(VMEdone=n(),
PCSol = sum(PCsol),
PCReef = sum(PCreef),
GSol = sum(GPCsol),
GReef = sum(GPCreef)) %>%
mutate(AVPCSol = (PCSol / VMEdone)) %>%
mutate(AVGSol = (GSol / VMEdone)) %>%
mutate(AVPCReef = (PCReef / VMEdone)) %>%
mutate(AVGReef = (GReef / VMEdone))
Checking how well the estimated percent cover of coral matrix matches with measured percent cover of coral matrix (dead & alive)
VME_AnnoAll %>%
ggplot(mapping = aes(x= (`SC-SOL`+`SU-SOL`),
y= PC_SolMatrix))+
geom_point()
Figure 4.9: Comparison of estimated and measured percent cover of Solenosmilia matrix for raw data and for averages by operation
Reef_transectSummary %>%
ggplot(mapping = aes(x= AVPCSol,
y= AVGSol,
colour = MapLoc.x))+
geom_point()
Figure 4.10: Comparison of estimated and measured percent cover of Solenosmilia matrix for raw data and for averages by operation
#+ geom_text(aes(label=SVY_OPS.x))
A linear regression of these data shows the following
TempLM <- VME_AnnoAll %>%
mutate(PCsol = (`SC-SOL`+`SU-SOL`),
GPCsol = (`PC_SolMatrix`),
PCreef = (`SC-SOL`+`SU-SOL`+ `SC-ENLP`+ `SU-ENLP`+ `SC-MAD` + `SU-MAD`),
GPCreef = (`PC_SolMatrix` + `PC_Sub_CoralReef` + `PC_EnallopMatrix`))
Linear_SOLmatrix <- lm(GPCsol ~ PCsol, data=TempLM)
#Longer summary of the model
summary(Linear_SOLmatrix)
##
## Call:
## lm(formula = GPCsol ~ PCsol, data = TempLM)
##
## Residuals:
## Min 1Q Median 3Q Max
## -78.768 0.322 0.322 0.322 100.322
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.321704 0.181363 -1.774 0.0762 .
## PCsol 0.800900 0.005372 149.092 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 10.26 on 3779 degrees of freedom
## (1714 observations deleted due to missingness)
## Multiple R-squared: 0.8547, Adjusted R-squared: 0.8547
## F-statistic: 2.223e+04 on 1 and 3779 DF, p-value: < 2.2e-16
Looking at the combined reef categories:
VME_AnnoAll %>%
ggplot(mapping = aes(x= (`SC-SOL`+`SU-SOL`+ `SC-ENLP`+ `SU-ENLP`+ `SC-MAD` + `SU-MAD`),
y= (`PC_SolMatrix` + `PC_Sub_CoralReef` + `PC_EnallopMatrix`)))+
geom_point()
Figure 4.11: Comparison of estimated and measured percent cover of all types of coral matrix for raw data and for averages by operation
Reef_transectSummary %>%
ggplot(mapping = aes(x= AVPCReef,
y= AVGReef,
colour = MapLoc.x))+
geom_point()
Figure 4.12: Comparison of estimated and measured percent cover of all types of coral matrix for raw data and for averages by operation
#+ geom_text(aes(label=SVY_OPS.x))
A linear regression of these data shows the following:
TempLM <- VME_AnnoAll %>%
mutate(PCreef = (`SC-SOL`+`SU-SOL`+ `SC-ENLP`+ `SU-ENLP`+ `SC-MAD` + `SU-MAD`),
GPCreef = (`PC_SolMatrix` + `PC_Sub_CoralReef` + `PC_EnallopMatrix`))
Linear_REEF <- lm(GPCreef ~ PCreef, data=TempLM)
#Longer summary of the model
summary(Linear_REEF)
##
## Call:
## lm(formula = GPCreef ~ PCreef, data = TempLM)
##
## Residuals:
## Min 1Q Median 3Q Max
## -79.241 0.281 0.281 0.281 100.281
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.281392 0.179458 -1.568 0.117
## PCreef 0.805220 0.005308 151.697 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 10.15 on 3779 degrees of freedom
## (1714 observations deleted due to missingness)
## Multiple R-squared: 0.8589, Adjusted R-squared: 0.8589
## F-statistic: 2.301e+04 on 1 and 3779 DF, p-value: < 2.2e-16
Considering the relationship of the number of live heads counted versus the percent cover by live Solenosmilia there appears to be a much better fit.
VME_AnnoAll %>%
ggplot(mapping = aes(x= (`SC-SOL`),
y= S.variabilis))+
geom_point() +
geom_smooth(method = "lm", se = TRUE)
Figure 4.13: Comparison of density of live solenosmilia heads and measured percent cover of live Solenosmilia, with a smoothed linear regression line
A linear regression of these data:
# linear regression of head count vs pc cover live
Linear_SOL_live <- lm(`S.variabilis` ~ (`SC-SOL`), data = VME_AnnoAll)
#Longer summary of the model
summary(Linear_SOL_live)
##
## Call:
## lm(formula = S.variabilis ~ (`SC-SOL`), data = VME_AnnoAll)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5.2717 -0.0357 -0.0357 -0.0357 8.6611
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.035653 0.005629 6.333 2.68e-10 ***
## `SC-SOL` 0.089730 0.001270 70.644 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.3394 on 3779 degrees of freedom
## (1714 observations deleted due to missingness)
## Multiple R-squared: 0.5691, Adjusted R-squared: 0.569
## F-statistic: 4991 on 1 and 3779 DF, p-value: < 2.2e-16
Checking of the data where the difference between estimates and PC point scores are greater than 25% resulted in the identification of some data entry errors which were corrected. The remaining differences stem from two main sources:
Point counts appeared to overall result in higher percent cover than by-eye estimates, especiallty where there were relatively small sandy patches beween matrix, the points appear to fall preferentially on matrix, despite the fact that points were randomly placed in images but
Images with ‘Low matrix’ according to the impacts overview scores, especially where it was sediment filled or shaved, and ‘shaved rubble’ had high differences i percent cover of reef between the point scores the by-eye estimates.
T1 <- VME_AnnoAll %>%
mutate(point_reef = (`SC-SOL`+`SU-SOL`+ `SC-ENLP`+ `SU-ENLP`+ `SC-MAD` + `SU-MAD`),
point_sol = (`SC-SOL`+`SU-SOL`),
guess_reef = (`PC_SolMatrix` + `PC_Sub_CoralReef` + `PC_EnallopMatrix`),
guess_sol = (`PC_SolMatrix`)) %>%
mutate(diff_reef = (`point_reef` - `guess_reef`),
diff_sol = (`point_sol` - `guess_sol`))
T2 <- T1 %>%
filter(abs(diff_reef) > 25 |
abs(diff_sol) > 25 ) #%>%
#left_join(PtsPerImage, by=c("image_key" ="image_key"))
#write_csv(T2, "Results/CheckpcReef.csv")
CheckReef1 <- T1 %>%
filter(!is.na(guess_reef)) %>%
group_by(OV_group, OV_CAT, OV_CD) %>%
summarise(count = n(),
avpreef = mean(point_reef),
avgreef = mean(guess_reef),
avDifreef = mean(diff_reef)) %>%
arrange(avDifreef)
kable(CheckReef1, caption="overview categories scored")
| OV_group | OV_CAT | OV_CD | count | avpreef | avgreef | avDifreef |
|---|---|---|---|---|---|---|
| Rubble | HighAb - with clumps - live | RhCL | 1 | 0.0000000 | 1.0000000 | -1.0000000 |
| Rubble | MedAb - with clumps - dead | RmCD | 222 | 0.6715101 | 1.5720721 | -0.9005620 |
| Rubble | Isolated fragments/ clumps | RIC | 162 | 0.0596565 | 0.7654321 | -0.7057756 |
| Rubble | LowAb - with clumps | RlC | 26 | 0.0000000 | 0.0384615 | -0.0384615 |
| Rubble | LowAb - no clumps | RlNC | 78 | 0.0000000 | 0.0128205 | -0.0128205 |
| Other | No rubble or matrix | OTHER | 1786 | 0.0000000 | 0.0067189 | -0.0067189 |
| Rubble | HighAb - with clumps - dead | RhCD | 36 | 3.3623682 | 3.3611111 | 0.0012571 |
| Rubble | MedAb | Rm | 350 | 0.2178611 | 0.0400000 | 0.1778611 |
| Rubble | HighAb - no other | RhNOth | 63 | 0.5380117 | 0.0952381 | 0.4427736 |
| Rubble | HighAb - with other | RhO | 270 | 0.8434476 | 0.1111111 | 0.7323365 |
| Rubble | MedAb - with clumps - live | RmCL | 3 | 6.2034739 | 5.0000000 | 1.2034739 |
| Rubble | MedAb - with patch - live | RmPL | 8 | 7.0000000 | 4.3750000 | 2.6250000 |
| Rubble | MedAb - with patch - dead | RmPD | 20 | 6.7198175 | 3.7000000 | 3.0198175 |
| Matrix | High - reef | MHReef | 277 | 84.2338183 | 79.6678700 | 4.5659483 |
| Rubble | HighAb - with patch - live | RhPL | 8 | 20.7683271 | 13.7500000 | 7.0183271 |
| Matrix | High - shaved | MHS | 92 | 90.1315645 | 79.1521739 | 10.9793906 |
| Rubble | Shaved | RS | 35 | 21.0296728 | 9.6857143 | 11.3439585 |
| Matrix | Low - with patch - dead | MLPD | 8 | 24.3647940 | 10.3750000 | 13.9897940 |
| Matrix | Low - with clumps - dead | MLCD | 46 | 31.7318205 | 15.3260870 | 16.4057335 |
| Matrix | Low - sediment filled | MLSed | 139 | 36.8736416 | 15.5827338 | 21.2909078 |
| Matrix | Low - with patch - live | MLPL | 32 | 58.7453401 | 36.1562500 | 22.5890901 |
| NA | NA | NA | 3 | 88.0237301 | 62.6666667 | 25.3570634 |
| Rubble | HighAb - with patch - dead | RhPD | 3 | 28.9147810 | 1.0000000 | 27.9147810 |
| Matrix | Low - shaved | MLS | 109 | 68.2922344 | 39.3761468 | 28.9160876 |
| Matrix | Low - with clumps - live | MLCL | 4 | 86.4194205 | 36.2500000 | 50.1694205 |
###Distribution of VME taxa over coral matrix percent by points
The distribution of VME taxa over coral matrix substrates are graphed below.
VMEanno_DensQ %>%
left_join(PCcoverbyImage, by=c("image_key"="image_key")) %>%
filter((`SC-SOL`+`SU-SOL`) != 0) %>%
ggplot(mapping = aes(x= (`SC-SOL`+`SU-SOL`),
y= Dens
))+
geom_point()+
labs(x="% cover coral matrix (dead and alive)", y="density of VME taxa (ind./m2)")+
facet_wrap(~CONCEPT, ncol=4, scales = "free_y")
Figure 4.14: Relationship between density of VME taxa and percent cover of dead & alive matrix forming coral
VMEanno_DensQ %>%
left_join(PCcoverbyImage, by=c("image_key"="image_key")) %>%
filter((`SC-SOL`) != 0) %>%
ggplot(mapping = aes(x= (`SC-SOL`),
y= Dens
))+
geom_point()+
labs(x="% cover live Solenosmilia)", y="density of VME taxa (ind./m2)")+
facet_wrap(~CONCEPT, ncol=4, scales = "free_y")
Figure 4.15: Relationship between density of VME taxa and percent cover of live Solenosmila
VMEanno_DensQ %>%
left_join(PCcoverbyImage, by=c("image_key"="image_key")) %>%
filter((`SU-SOL`) != 0) %>%
ggplot(mapping = aes(x= (`SU-SOL`),
y= Dens
))+
geom_point()+
labs(x="% cover dead Solenosmilia)", y="density of VME taxa (ind./m2)")+
facet_wrap(~CONCEPT, ncol=4, scales = "free_y")
Figure 4.16: Relationship between density of VME taxa and percent cover of dead Solenosmila
Looking into the overview scores of potential gear impacts for still images is done in a separate Markdown file.